<template>
  <div>
    <div class="d-s-c">
      <div class="flex-1 d-b-c">
        <el-button type="primary" size="small" icon="Plus" @click="addClick"
          >创建直播</el-button
        >
        <el-form
          size="small"
          :inline="true"
          :model="searchForm"
          class="demo-form-inline"
        >
          <el-form-item label=""
            ><el-input
              v-model="searchForm.search"
              placeholder="请输入直播间名称/主播昵称"
            ></el-input
          ></el-form-item>
          <el-form-item
            ><el-button type="primary" icon="Search" @click="onSubmit"
              >查询</el-button
            ></el-form-item
          >
        </el-form>
      </div>
    </div>

    <!--内容-->
    <div class="live-list">
      <div class="table-wrap">
        <el-table
          size="small"
          :data="tableData"
          border
          style="width: 100%"
          v-loading="loading"
        >
          <el-table-column prop="roomid" label="直播间ID"></el-table-column>
          <el-table-column prop="name" label="直播间名称"></el-table-column>
          <el-table-column prop="anchorName" label="主播昵称"></el-table-column>
          <el-table-column
            prop="startTime"
            label="直播开始时间"
          ></el-table-column>
          <el-table-column
            prop="endTime"
            label="直播结束时间"
          ></el-table-column>
          <el-table-column prop="liveStatus" label="直播间状态">
            <template #default="scope">
              {{ convertStatus(scope.row.liveStatus) }}
            </template>
          </el-table-column>
          <el-table-column prop="isTop" label="置顶">
            <template #default="scope">
              <span v-if="scope.row.isTop == 0" class="gray">未置顶</span>
              <span v-else class="red">已置顶</span>
            </template>
          </el-table-column>
          <el-table-column fixed="right" label="操作" width="80">
            <template #default="scope">
              <div class="table-buttons">
                <el-button @click="pushUrl(scope.row)" type="text" size="small"
                  >推流</el-button
                >
                <el-button
                  @click="openClick(scope.row)"
                  type="text"
                  size="small"
                  >商品</el-button
                >
                <el-button @click="delClick(scope.row)" type="text" size="small"
                  >删除</el-button
                >
                <el-button
                  @click="editClick(scope.row)"
                  type="text"
                  size="small"
                  >编辑</el-button
                >
                <el-button
                  @click="setTop(scope.row)"
                  type="text"
                  size="small"
                  >{{
                    scope.row.isTop == 0 ? "设为置顶" : "取消置顶"
                  }}</el-button
                >
              </div>
            </template>
          </el-table-column>
        </el-table>
      </div>
    </div>
    <!--分页-->
    <div class="pagination">
      <el-pagination
        @size-change="handleSizeChange"
        @current-change="handleCurrentChange"
        background
        :current-page="curPage"
        :page-size="pageSize"
        layout="total, prev, pager, next, jumper"
        :total="totalDataNumber"
      ></el-pagination>
    </div>
    <ProductIndex
      :roomId="roomId"
      :isProduct="isProduct"
      @closeDialog="isProduct = false"
    ></ProductIndex>
  </div>
</template>

<script>
import LiveApi from "@/api/live.js";
import ProductIndex from "../part/Product.vue";
export default {
  components: {
    ProductIndex,
  },
  data() {
    return {
      /*搜索表单对象*/
      searchForm: {},
      /*是否正在加载*/
      loading: true,
      /*一页多少条*/
      pageSize: 10,
      /*是否打开编辑弹窗*/
      openAdd: true,
      /*一共多少条数据*/
      totalDataNumber: 0,
      /*当前是第几页*/
      curPage: 1,
      /*列表数据*/
      tableData: [],
      isProduct: false,
      roomId: 0,
    };
  },
  created() {
    this.getData();
  },
  methods: {
    convertStatus(num) {
      let str = "";
      switch (num) {
        case 101:
          str = "直播中";
          break;
        case 102:
          str = "未开始";
          break;
        case 103:
          str = "已结束";
          break;
        case 104:
          str = "禁播";
          break;
        case 105:
          str = "暂停";
          break;
        case 106:
          str = "异常";
          break;
        case 107:
          str = "已过期";
          break;
      }
      return str;
    },
    pushUrl(row) {
      let self = this;
      self.loading = true;
      LiveApi.pushUrl(
        {
          roomId: row.roomid,
        },
        true
      )
        .then((res) => {
          self.loading = false;
          self.$alert(res.data, "提示", {
            confirmButtonText: "确定",
            cancelButtonText: "确定",
            showCancelButton: true,
            callback: (action) => {
              self.clickCopy(res.data);
            },
          });
        })
        .catch((error) => {
          self.loading = false;
        });
    },
    clickCopy(msg) {
      const save = function (e) {
        e.clipboardData.setData("text/plain", msg);
        e.preventDefault(); // 阻止默认行为
      };
      const once = {
        once: true,
      };
      //document.addEventListener('copy', save, once); // 添加一个copy事件,当触发时执行一次,执行完删除
      //document.execCommand('copy'); // 执行copy方法
      ElMessage({ message: "确认成功", type: "success" });
    },
    /*查询*/
    onSubmit() {
      this.curPage = 1;
      this.getData();
    },

    /*选择第几页*/
    handleCurrentChange(val) {
      let self = this;
      self.curPage = val;
      self.getData();
    },

    /*每页多少条*/
    handleSizeChange(val) {
      this.pageSize = val;
      this.getData();
    },

    /*获取列表*/
    getData() {
      let self = this;
      let Params = self.searchForm;
      Params.pageIndex = self.curPage;
      Params.pageSize = self.pageSize;
      self.loading = true;
      LiveApi.getList(Params, true)
        .then((res) => {
          self.tableData = res.data.records;
          self.totalDataNumber = res.data.total;
          self.loading = false;
        })
        .catch((error) => {
          self.loading = false;
        });
    },

    /*直播同步*/
    synLive() {
      let self = this;
      self.loading = true;
      LiveApi.syn({}, true)
        .then((res) => {
          self.loading = false;
          self.curPage = 1;
          self.getData();
        })
        .catch((error) => {
          self.loading = false;
        });
    },

    /*打开编辑*/
    addClick() {
      this.$router.push({
        path: "/plus/live/wx/room/create",
      });
    },

    /*打开编辑*/
    editClick(row) {
      this.$router.push({
        path: "/plus/live/wx/room/edit",
        query: {
          roomId: row.roomid,
        },
      });
    },

    /*设置是否置顶*/
    setTop(row) {
      let self = this;
      LiveApi.settop({
        liveId: row.liveId,
        isTop: row.isTop == 0 ? 1 : 0,
      }).then((data) => {
        ElMessage({
          message: "置顶成功",
          type: "success",
        });
        self.getData();
      });
    },

    /*删除*/
    delClick(row) {
      let self = this;
      ElMessageBox.confirm("删除后不可恢复，确认删除该记录吗?", "提示", {
        type: "warning",
      }).then(() => {
        LiveApi.deleteRoom({
          roomId: row.roomid,
        }).then((data) => {
          ElMessage({
            message: "删除成功",
            type: "success",
          });
          self.getData();
        });
      });
    },
    openClick(row) {
      let self = this;
      self.roomId = row.roomid;
      self.isProduct = true;
    },
  },
};
</script>

<style scoped>
.el-message-box__message p {
  word-break: break-all;
}
</style>
